const startEndTimestamps = (num) => {
    let startTimer = null
    let endTimer = null
    // 获取时间戳 (本月第一天00.00.00  本月最后一天23.59.59)
    let data = new Date(); //本月
    endTimer = parseInt(data.getTime() / 1000); // 获取当前时间的时间戳

    let year = data.getFullYear(); //获取当前日期的年份
    let month = data.getMonth(); //获取当前日期的月份
    let day = data.getDate(); //获取当前日期的日
    let days = new Date(year, month, 0);
    days = days.getDate(); //获取当前日期中的月的天数
    let year2 = year;
    let month2 = parseInt(month) - parseInt(num);
    if (month2 < 0) {
        year2 = parseInt(year2) - parseInt(month2 / 12) == 0 ? 1 : parseInt(month2 / 12)
        month2 = 12 + parseInt(month2 % 12)
    }
    if (month2 == 0) {
        year2 = parseInt(year2) - 1
        month2 = 12
    }
    let day2 = day;
    let days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (num == 0) {
        day2 = 1
    }
    startTimer = new Date(year2, month2, day2).getTime() / 1000;
    return {
        startTimer,
        endTimer
    }
}
// 获取本月第一天和最后一天时间戳
const firstLastDayTimestamps = () => {
    // 获取时间戳 (本月第一天00.00.00  本月最后一天23.59.59)
    let data = new Date(); //本月
    data.setDate(1);
    data.setHours(0);
    data.setSeconds(0);
    data.setMinutes(0);
    // dateObject 的月份字段，使用本地时间。返回值是 0（一月） 到 11（十二月） 之间的一个整数。
    let data1 = new Date(); // 下月
    if (data.getMonth() == 11) {
        data1.setMonth(0)
    } else {
        data1.setMonth(data.getMonth() + 1)
    }
    data1.setDate(1);
    data1.setHours(0);
    data1.setSeconds(0);
    data1.setMinutes(0);
    let startTimer = parseInt(data.getTime() / 1000);
    let endTimer = parseInt(data1.getTime() / 1000) - 1;//(计算下月1号时间戳-1即可)
    return {
        startTimer,
        endTimer
    }
}
// 日期转化时间戳
const dateTimestamp = (date) => {
    // let dateArr = date.split("-")
    let newDate = new Date(date)
    let timeStamp = parseInt(newDate.getTime() / 1000)
    return timeStamp
}

// 时间戳转化日期
const dateFormat = (timeStamp) => {
    //timeStamp是整数，否则要parseInt转换
    var time = new Date(timeStamp * 1000);
    var y = time.getFullYear();
    var m = time.getMonth() + 1;
    var d = time.getDate();
    if (m < 10) m = '0' + m
    if (d < 10) d = '0' + d
    return y + '-' + m + '-' + d
}
// 获取当前时间
const getDate = () => {
    //timeStamp是整数，否则要parseInt转换
    var time = new Date();
    var y = time.getFullYear();
    var m = time.getMonth() + 1;
    var d = time.getDate();
    if (m < 10) m = '0' + m
    if (d < 10) d = '0' + d
    return y + '-' + m + '-' + d
}
module.exports = {
    startEndTimestamps,
    firstLastDayTimestamps,
    dateTimestamp,
    dateFormat,
    getDate
}
